/*
 * Copyright (c) 2017-2025 Tencent. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.tencentcloudapi.tdmq.v20200217.models;

import com.tencentcloudapi.common.AbstractModel;
import com.tencentcloudapi.common.SSEResponseModel;
import com.google.gson.annotations.SerializedName;
import com.google.gson.annotations.Expose;
import java.util.HashMap;

public class DescribeMsgResponse extends AbstractModel {

    /**
    * Message attributes.
    */
    @SerializedName("Properties")
    @Expose
    private String Properties;

    /**
    * Message body.
    */
    @SerializedName("Body")
    @Expose
    private String Body;

    /**
    * Batch ID.
    */
    @SerializedName("BatchId")
    @Expose
    private String BatchId;

    /**
    * Production time.
    */
    @SerializedName("ProduceTime")
    @Expose
    private String ProduceTime;

    /**
    * Message ID.
    */
    @SerializedName("MsgId")
    @Expose
    private String MsgId;

    /**
    * Producer name.
    */
    @SerializedName("ProducerName")
    @Expose
    private String ProducerName;

    /**
    * Message key
Note: This field may return null, indicating that no valid values can be obtained.
    */
    @SerializedName("Key")
    @Expose
    private String Key;

    /**
    * Message metadata information.
Note: This field may return null, indicating that no valid values can be obtained.
    */
    @SerializedName("Metadata")
    @Expose
    private String Metadata;

    /**
    * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
    */
    @SerializedName("RequestId")
    @Expose
    private String RequestId;

    /**
     * Get Message attributes. 
     * @return Properties Message attributes.
     */
    public String getProperties() {
        return this.Properties;
    }

    /**
     * Set Message attributes.
     * @param Properties Message attributes.
     */
    public void setProperties(String Properties) {
        this.Properties = Properties;
    }

    /**
     * Get Message body. 
     * @return Body Message body.
     */
    public String getBody() {
        return this.Body;
    }

    /**
     * Set Message body.
     * @param Body Message body.
     */
    public void setBody(String Body) {
        this.Body = Body;
    }

    /**
     * Get Batch ID. 
     * @return BatchId Batch ID.
     */
    public String getBatchId() {
        return this.BatchId;
    }

    /**
     * Set Batch ID.
     * @param BatchId Batch ID.
     */
    public void setBatchId(String BatchId) {
        this.BatchId = BatchId;
    }

    /**
     * Get Production time. 
     * @return ProduceTime Production time.
     */
    public String getProduceTime() {
        return this.ProduceTime;
    }

    /**
     * Set Production time.
     * @param ProduceTime Production time.
     */
    public void setProduceTime(String ProduceTime) {
        this.ProduceTime = ProduceTime;
    }

    /**
     * Get Message ID. 
     * @return MsgId Message ID.
     */
    public String getMsgId() {
        return this.MsgId;
    }

    /**
     * Set Message ID.
     * @param MsgId Message ID.
     */
    public void setMsgId(String MsgId) {
        this.MsgId = MsgId;
    }

    /**
     * Get Producer name. 
     * @return ProducerName Producer name.
     */
    public String getProducerName() {
        return this.ProducerName;
    }

    /**
     * Set Producer name.
     * @param ProducerName Producer name.
     */
    public void setProducerName(String ProducerName) {
        this.ProducerName = ProducerName;
    }

    /**
     * Get Message key
Note: This field may return null, indicating that no valid values can be obtained. 
     * @return Key Message key
Note: This field may return null, indicating that no valid values can be obtained.
     */
    public String getKey() {
        return this.Key;
    }

    /**
     * Set Message key
Note: This field may return null, indicating that no valid values can be obtained.
     * @param Key Message key
Note: This field may return null, indicating that no valid values can be obtained.
     */
    public void setKey(String Key) {
        this.Key = Key;
    }

    /**
     * Get Message metadata information.
Note: This field may return null, indicating that no valid values can be obtained. 
     * @return Metadata Message metadata information.
Note: This field may return null, indicating that no valid values can be obtained.
     */
    public String getMetadata() {
        return this.Metadata;
    }

    /**
     * Set Message metadata information.
Note: This field may return null, indicating that no valid values can be obtained.
     * @param Metadata Message metadata information.
Note: This field may return null, indicating that no valid values can be obtained.
     */
    public void setMetadata(String Metadata) {
        this.Metadata = Metadata;
    }

    /**
     * Get The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem. 
     * @return RequestId The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
     */
    public String getRequestId() {
        return this.RequestId;
    }

    /**
     * Set The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
     * @param RequestId The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
     */
    public void setRequestId(String RequestId) {
        this.RequestId = RequestId;
    }

    public DescribeMsgResponse() {
    }

    /**
     * NOTE: Any ambiguous key set via .set("AnyKey", "value") will be a shallow copy,
     *       and any explicit key, i.e Foo, set via .setFoo("value") will be a deep copy.
     */
    public DescribeMsgResponse(DescribeMsgResponse source) {
        if (source.Properties != null) {
            this.Properties = new String(source.Properties);
        }
        if (source.Body != null) {
            this.Body = new String(source.Body);
        }
        if (source.BatchId != null) {
            this.BatchId = new String(source.BatchId);
        }
        if (source.ProduceTime != null) {
            this.ProduceTime = new String(source.ProduceTime);
        }
        if (source.MsgId != null) {
            this.MsgId = new String(source.MsgId);
        }
        if (source.ProducerName != null) {
            this.ProducerName = new String(source.ProducerName);
        }
        if (source.Key != null) {
            this.Key = new String(source.Key);
        }
        if (source.Metadata != null) {
            this.Metadata = new String(source.Metadata);
        }
        if (source.RequestId != null) {
            this.RequestId = new String(source.RequestId);
        }
    }


    /**
     * Internal implementation, normal users should not use it.
     */
    public void toMap(HashMap<String, String> map, String prefix) {
        this.setParamSimple(map, prefix + "Properties", this.Properties);
        this.setParamSimple(map, prefix + "Body", this.Body);
        this.setParamSimple(map, prefix + "BatchId", this.BatchId);
        this.setParamSimple(map, prefix + "ProduceTime", this.ProduceTime);
        this.setParamSimple(map, prefix + "MsgId", this.MsgId);
        this.setParamSimple(map, prefix + "ProducerName", this.ProducerName);
        this.setParamSimple(map, prefix + "Key", this.Key);
        this.setParamSimple(map, prefix + "Metadata", this.Metadata);
        this.setParamSimple(map, prefix + "RequestId", this.RequestId);

    }
}

